The GPRS (General Packet Radio Service) is a packet-switched data transmission service of a GSM (Global System for Mobile communications) network which service supplements existing services, such as traditional circuit-switched data transmission and short-message service. The EGPRS (Enhanced GPRS) is a more developed version of the GPRS, which utilizes the EDGE (Enhanced data rates for GSM Evolution) technology. The EDGE enables greater data transmission speeds compared to the normal GSM system.
On a general level, an EGPRS communications system comprises a backbone network of the EGPRS mobile station network and a radio access network ERAN (EDGE RAN, Radio Access Network), which is connected to the backbone network. The radio access network provides a terminal an access to the mobile station network via one or more base stations of the radio access network. There is an air interface (or a radio interface) between the radio access network and the terminal.
The backbone network is typically connected also to a fixed network in which case the mobile communications network may provide the terminal a connection to the services of the fixed network. The fixed network may be, for example, an IP (Internet Protocol) network, such as the Internet or an intranet network of a service provider (an intranet network which pertains to the operator domain). The connection may be done, for example, via a Gi interface.
In the radio access network, a BSC (Base Station Controller) element is responsible for distributing radio resources to the terminal. A PCU (Packet Control Unit) element operates logically in connection with the BSC, which element controls in GPRS/EGPRS systems the functionality of packet-switched data transmission over a radio interface with a RLC (Radio Link Control) protocol layer. With the RLC layer, acknowledgement messages (ACK/NACK), inter alia, are sent by means of which one may ensure that all sent RLC data blocks are received at the receiving end.
On the RLC level, one has defined for EGPRS an EGPRS PACKET UPLINK ACK/NACK message for uplink, that is, occurring from the terminal to the direction of the network, data transmission which message is used for positive acknowledging (ACK) or negative acknowledging (NACK) of RLC data blocks sent by the terminal. With one acknowledgement message, one typically acknowledges several RLC data blocks. With a positive acknowledgement (ACK), the network informs the terminal that corresponding sent data blocks have been received successfully, and with a negative acknowledgement (NACK), the network informs the terminal that corresponding sent data blocks have not arrived, in which case the terminal should send again the data blocks in question. The EGPRS PACKET UPLINK ACK/NACK message has been defined in more detail in the 3GPP (3rd Generation Partnership Project) standard 3GPP TS 04.60 v 8.20.0 (2003 September).
In paragraph 12.3.1 of said standard 3GPP TS 04.60, an EGPRS Ack/Nack Description information element (IE) has been defined which element comprises RLC parameters which acknowledge positively or negatively a group of RLC data blocks. The information element is a group of information, which may be included in a signalling message or data stream, which is transmitted over a radio interface. The EGPRS Ack/Nack Description information element expresses by means of an Ack/Nack bit map and RLC data block sequence numbers (BSN) which RLC data blocks are acknowledged positively and which negatively. The information element may comprise a compressed and/or an uncompressed Ack/Nack bit map.
Now it has been noticed that the EGPRS standard does not specify unambiguously how the Ack/Nack Description information elements should be handled in a terminal, because then said information element does not comprise a length field L, that is, L is unspecified. The value of L is, however, used in calculating the length of an uncompressed bit map. Thus, calculating the length of the uncompressed bit map may lead to an unspecified mode in the terminal. In a possible implementation, the terminal may assume that L=0, that is, if the acknowledgement message has no L field. The specifications related to the terminal do not indicate how the terminal should handle those acknowledgement messages in which L=0. (The terminal specifications assume that L=15-255.) In principle, the terminal may handle the messages, in which L=0, in a normal manner. Then a calculation formula for calculating a length of an uncompressed Ack/Nack bit map Lu yields a negative figure, which may lead to an error mode in the terminal and thus, for example, to resetting the terminal. Alternatively, the terminal may reject such acknowledgement messages altogether, which may lead to stalling of uplink data transmission if the transmission window is filled and the terminal does not receive any acknowledgements from the network.
In addition, although the values of L<15 are, in principle, invalid values according to the standard, it is possible that a network implementation leads to using these values. This naturally leads to problems such as presented above.